// let hd = `
//     qw.com
//     wq.com
// `
// console.log(hd.match(/.+/s)[0]);

// /i 匹配大小写 g全局

// let hd = "hunhun"
// console.log(hd.match(/u+/sg));

//m 每一行单独处理
// let hd = `
//    #1 js,100元 #
//    #2 php,100元 #
//    #3 python,100元 #
// `
// let lessons = hd.match(/^\s+#\d+\s+.+\s+#$/gm).map(v => {
//     v = v.replace(/\s+#\d+\s+/, "").replace(/\s+#/, "")
//     let [name,price] = v.split(",")
//     return {name,price}
// })

// console.log(lessons);

//\p{Unicode 属性名=Unicode 属性值}格式/\p{}/u 可以匹配到宽字节一般字符都是2个字节  L只匹配字母 P标调符号 sc语言系统
// let hd = "as,d23As1d2.023你好"
// console.log(hd.match(/\p{L}/gu));
// console.log(hd.match(/[a-z]|[A-Z]/g));
// console.log(hd.match(/\p{P}/gu));
// console.log(hd.match(/\p{sc=Han}/gu));

//exec 每次检索都是从下一个开始  第一次从0 第二次从1 ....
// let hd = "gengwenguang"
// let reg = /\w/g;
// while ((res = reg.exec(hd))){
//     console.log(res[0]);
// }
// /g 和 /y 的区别 /g会自动忽略不匹配的内容  /y不会忽略不匹配的内容，返回null
// let zz = "gengwenguang"
// let regg = /g/g
// let regy = /g/y
// console.log(regg.exec(zz) , " g");
// console.log(regg.lastIndex , " g");
// console.log(regg.exec(zz)  , " g");
// console.log(regg.lastIndex , " g");

// console.log(regy.exec(zz) , " y");
// console.log(regy.lastIndex , " y");
// console.log(regy.exec(zz)  , " y");
// console.log(regy.lastIndex , " y");
// 使用/y 设置lastIndex 可以控制从第几位开始检索
// regy.lastIndex = 3
// console.log(regy.exec(zz) , " y");
// console.log(regy.lastIndex , " y");

// \1 使用前面原子组的匹配规则
let zz = "2023-12/12"  //-和/都可以
console.log(/^\d{4}[-\/]\d{2}[-\/]\d{2}$/.test(zz));
console.log(/^\d{4}([-\/])\d{2}\1\d{2}$/.test(zz)); //默认规则统一 前后要求一样